package com.ssh.dao.baseDao;

import java.io.Serializable;
import java.util.List;

public interface BaseDao<T> {

    /**
     * 根据ID加载实体
     * @param entityClazz
     * @param id
     * @return
     */
    T findById(Class<T> entityClazz, Serializable id);

    /**
     * 保存实体
     * @param entity
     * @return
     */
    Serializable save(T entity);

    /**
     * 更新实体
     * @param entity
     */
    void update(T entity);

    /**
     * 删除实体
     * @param entity
     */
    void deleteByObj(T entity);

    /**
     * 根据ID删除实体
     * @param entityClazz
     * @param id
     */
    boolean deleteById(Class<T> entityClazz, Serializable id);

    /**
     * 获取所有实体
     * @param entityClazz
     * @return
     */
    List<T> findAll(Class<T> entityClazz);

    /**
     * 获取实体总数
     * @param entityClazz
     * @return
     */
    long findCount(Class<T> entityClazz);

    /**
     * 返回该hql查出来的所有对象集合
     * @param hql
     * @return
     */
    List<T> findAllByHql(String hql);

    /**
     * 返回该hql根据参数条件查出来的
     * @param hql
     * @param params
     * @return
     */
    List<T> findByHql(String hql, Object[] params);



}
